perm filename BNF.PAT[BNF,JRA] blob sn#028950 filedate 1973-03-09 generic text, type T, neo UTF8
00100	
00200	
00300	(DEFPROP >PREDLET< 
00400	 (LAMBDA(X)
00500	  (OUTRUL X (FUNCTION (LAMBDA NIL (COND ((MEMQ (STK1) (APPEND INFPREDLET PREPREDLET)) (STK1)) (*NIL*)))))) 
00600	EXPR)
00700	
00800	(DEFPROP >MATCH< 
00900	 (LAMBDA(%N)
01000	  (OUTRUL %N
01100		  (FUNCTION
01200		   (LAMBDA NIL
01300		    (COND ((AND (MATCH (QUOTE (%NG . *))) (>PRED< 0)) (LIST  ONEGSGN  (STK0)))
01400			  ((AND (MATCH (QUOTE (%NG *))) (>PREDLET< 0)) (LIST ONEGSGN  (STK0)))
01500			  ((AND (MATCH (QUOTE (CL (* . *)))) (>ID< 1) (>VARLIST< 0))
01600			   (LIST (STK1) (QUOTE (:CH /[)) (STK0) (QUOTE (:CH /]))))
01700			  ((>PRED< 1) (STK1))
01800			  ((AND (MATCH (QUOTE (*))) (>PREDLET< 0)) (STK0))
01900			  ((AND (MATCH (QUOTE (CL *))) (>ID< 0)) (STK0))
02000			  ((AND (MATCH (QUOTE (CL *))) (>NUMBER< 0)) (STK0))
02100			  ((>TM< 1) (STK1))
02200			  ((AND (MATCH (QUOTE (*))) (>FNLET< 0)) (STK0))))))) 
02300	EXPR)
02400	
02500	(DEFPROP >TERM< 
02600	 (LAMBDA(%N)
02700	  (OUTRUL %N
02800		  (FUNCTION
02900		   (LAMBDA NIL
03000		    (COND ((AND (MATCH (QUOTE (DEPTH (LIST *)))) (>VARL< 0))
03100			   (LIST (QUOTE (:CH ∂)) (QUOTE (:CH /()) (STK0) (QUOTE (:CH /)))))
03200			  ((AND (MATCH (QUOTE (DEPTH1 (LIST *)))) (>VART< 0))
03300			   (LIST (QUOTE (:CH ∂)) (QUOTE (:CH /()) (STK0) (QUOTE (:CH /)))))
03400			  ((AND (MATCH (QUOTE (DEPTH (CDR *)))) (>VARC< 0))
03500			   (LIST (QUOTE (:CH ∂)) (QUOTE (:CH /()) (STK0) (QUOTE (:CH /)))))
03600			  ((AND (MATCH (QUOTE (TREEDEP *))) (>VARC< 0))
03700			   (LIST (QUOTE (:CH β)) (QUOTE (:CH /()) (STK0) (QUOTE (:CH /)))))
03800			  ((>VARL< 1) (STK1))
03900			  ((>VART< 1) (STK1))
04000			  ((>VARC< 1) (STK1))
04100			  ((AND (MATCH (QUOTE (TREE *))) (>VARC< 0))
04200			   (LIST (QUOTE TR) (QUOTE (:CH /()) (STK0) (QUOTE (:CH /)))))
04300			  ((AND (MATCH (QUOTE (LENGTH (CDR *)))) (>VARC< 0))
04400			   (LIST (QUOTE (:CH α)) (QUOTE (:CH /()) (STK0) (QUOTE (:CH /)))))
04500			  ((AND (MATCH (QUOTE (NOSYM *))) (>VART< 0))
04600			   (LIST (QUOTE (:CH α)) (QUOTE (:CH /()) (STK0) (QUOTE (:CH /)))))
04700			  ((AND (MATCH (QUOTE (NOSYM *))) (>VARL< 0))
04800			   (LIST (QUOTE (:CH α)) (QUOTE (:CH /()) (STK0) (QUOTE (:CH /)))))
04900			  ((EQ (QUOTE %PL) (STK1)) (QUOTE (:CH /+)))
05000			  ((EQ (QUOTE %NG) (STK1)) (QUOTE (:CH /-)))
05100			  ((AND (MATCH (QUOTE (AND . *))) (>MATCHLIST< 0))
05200			   (LIST (QUOTE (:CH ⊂)) (STK0) (QUOTE (:CH ⊃))))
05300			  ((AND (MATCH (QUOTE (OR . *))) (>MATCHLIST< 0))
05400			   (LIST (QUOTE (:CH ⊃)) (STK0) (QUOTE (:CH ⊂))))
05500			  ((>NUMBER< 1) (STK1))
05600			  ((>MATCH< 1) (STK1))))))) 
05700	EXPR)